btc <- getSymbols(Symbols="BTC-CAD", auto.assign=FALSE)
## remove today
btc <- btc[1:nrow(btc)-1,]
summary(btc)
## Index BTC-CAD.Open BTC-CAD.High BTC-CAD.Low
## Min. :2019-09-18 Min. : 6996 Min. : 7439 Min. : 5721
## 1st Qu.:2020-02-17 1st Qu.:11482 1st Qu.:11703 1st Qu.:11261
## Median :2020-07-19 Median :13527 Median :13698 Median :13154
## Mean :2020-07-19 Mean :24778 Mean :25458 Mean :24027
## 3rd Qu.:2020-12-19 3rd Qu.:29650 3rd Qu.:30704 3rd Qu.:28960
## Max. :2021-05-21 Max. :79624 Max. :81446 Max. :77726
## NA's :4 NA's :4 NA's :4
## BTC-CAD.Close BTC-CAD.Volume BTC-CAD.Adjusted
## Min. : 6931 Min. :1.625e+10 Min. : 6931
## 1st Qu.:11480 1st Qu.:2.915e+10 1st Qu.:11480
## Median :13528 Median :4.480e+10 Median :13528
## Mean :24825 Mean :4.960e+10 Mean :24825
## 3rd Qu.:29908 3rd Qu.:6.351e+10 3rd Qu.:29908
## Max. :79598 Max. :4.471e+11 Max. :79598
## NA's :4 NA's :4 NA's :4
## basic chart_Series from quantmod
chart_Series(Cl(btc))
btc45d <- tail(btc, n=45)
summary(btc45d[,1:4])
## Index BTC-CAD.Open BTC-CAD.High BTC-CAD.Low
## Min. :2021-04-07 Min. :44588 Min. :50866 Min. :37107
## 1st Qu.:2021-04-18 1st Qu.:63805 1st Qu.:65129 1st Qu.:59574
## Median :2021-04-29 Median :69531 Median :71173 Median :66142
## Mean :2021-04-29 Mean :67378 Mean :69224 Mean :64474
## 3rd Qu.:2021-05-10 3rd Qu.:71451 3rd Qu.:73292 3rd Qu.:70128
## Max. :2021-05-21 Max. :79624 Max. :81446 Max. :77726
## BTC-CAD.Close
## Min. :44890
## 1st Qu.:62442
## Median :68599
## Mean :66752
## 3rd Qu.:71227
## Max. :79598
chart_Series(btc45d)
eth <- getSymbols(Symbols="ETH-CAD", auto.assign=FALSE)
## remove today - empty
eth <- eth[1:nrow(eth)-1,]
summary(eth)
## Index ETH-CAD.Open ETH-CAD.High ETH-CAD.Low
## Min. :2019-09-18 Min. : 154.6 Min. : 164.6 Min. : 132.5
## 1st Qu.:2020-02-17 1st Qu.: 244.0 1st Qu.: 249.5 1st Qu.: 239.6
## Median :2020-07-19 Median : 352.6 Median : 368.0 Median : 345.6
## Mean :2020-07-19 Mean : 851.4 Mean : 885.7 Mean : 814.7
## 3rd Qu.:2020-12-19 3rd Qu.: 807.7 3rd Qu.: 825.8 3rd Qu.: 776.4
## Max. :2021-05-21 Max. :5050.3 Max. :5267.4 Max. :4588.7
## NA's :4 NA's :4 NA's :4
## ETH-CAD.Close ETH-CAD.Volume ETH-CAD.Adjusted
## Min. : 154.9 Min. :6.923e+09 Min. : 154.9
## 1st Qu.: 243.9 1st Qu.:1.250e+10 1st Qu.: 243.9
## Median : 354.1 Median :1.848e+10 Median : 354.1
## Mean : 855.6 Mean :2.353e+10 Mean : 855.6
## 3rd Qu.: 812.7 3rd Qu.:2.971e+10 3rd Qu.: 812.7
## Max. :5043.1 Max. :1.025e+11 Max. :5043.1
## NA's :4 NA's :4 NA's :4
## basic chart_Series from quantmod
chart_Series(Cl(eth))
eth90d <- tail(eth, n=90)
summary(eth90d[,1:4])
## Index ETH-CAD.Open ETH-CAD.High ETH-CAD.Low
## Min. :2021-02-21 Min. :1799 Min. :1870 Min. :1656
## 1st Qu.:2021-03-15 1st Qu.:2237 1st Qu.:2286 1st Qu.:2123
## Median :2021-04-06 Median :2627 Median :2688 Median :2520
## Mean :2021-04-06 Mean :2856 Mean :2983 Mean :2709
## 3rd Qu.:2021-04-28 3rd Qu.:3269 3rd Qu.:3424 3rd Qu.:2991
## Max. :2021-05-21 Max. :5050 Max. :5267 Max. :4589
## ETH-CAD.Close
## Min. :1798
## 1st Qu.:2237
## Median :2635
## Mean :2862
## 3rd Qu.:3268
## Max. :5043
chart_Series(eth90d)
eth45d <- tail(eth, n=45)
summary(eth45d[,1:4])
## Index ETH-CAD.Open ETH-CAD.High ETH-CAD.Low
## Min. :2021-04-07 Min. :2484 Min. :2628 Min. :2361
## 1st Qu.:2021-04-18 1st Qu.:2897 1st Qu.:2959 1st Qu.:2650
## Median :2021-04-29 Median :3306 Median :3433 Median :3014
## Mean :2021-04-29 Mean :3509 Mean :3690 Mean :3302
## 3rd Qu.:2021-05-10 3rd Qu.:4226 3rd Qu.:4346 3rd Qu.:3952
## Max. :2021-05-21 Max. :5050 Max. :5267 Max. :4589
## ETH-CAD.Close
## Min. :2487
## 1st Qu.:2933
## Median :3304
## Mean :3515
## 3rd Qu.:4229
## Max. :5043
chart_Series(eth45d)
kryptos <- merge(btc, eth, join='outer', fill=NA)
kryptos2017 <- kryptos['2017-01-01/']
chart_Series(kryptos[,c(4,8)])
kryptos_all <- kryptos
kryptos <- kryptos["2017-01-01/"]
chart.Correlation(kryptos[,c(4,10)], histogram=TRUE)
df_kryptos <- as.data.frame(kryptos)
df_kryptos$date <- row.names(df_kryptos)
df_kryptos %>% ggplot(aes(x=BTC.CAD.Close, y=ETH.CAD.Close))+geom_point()
df_kryptos <- df_kryptos %>% mutate(
yr=year(date),
mth=month(date)
)
df_kryptos %>% ggplot(aes(x=BTC.CAD.Close, y=ETH.CAD.Close, color=as.factor(yr)))+geom_point()
Correlations vary by year. Of most relevance in most recent yr correlation.
df_kryptos_2020 <- df_kryptos %>% filter(date>='2020-01-01' & date<='2020-12-31')
df_kryptos_2020 %>%
ggplot(aes(x=BTC.CAD.Close, y=ETH.CAD.Close))+geom_point()+
geom_smooth(method='lm')
df_kryptos_2020 %>%
ggplot(aes(x=BTC.CAD.Close, y=ETH.CAD.Close, color=as.factor(mth)))+geom_point()+
geom_smooth(method='lm')
df_kryptos_2020 %>%
ggplot(aes(x=BTC.CAD.Close, y=ETH.CAD.Close))+geom_point(aes(color=as.factor(mth)))+
geom_smooth(method='lm')
chart.Correlation(df_kryptos_2020[,c(2,3,4,5,8,9,10,11)], histogram=TRUE)
df_kryptos_2021 <- df_kryptos %>% filter(date>='2021-01-01' & date<='2021-12-31')
df_kryptos_2021 %>%
ggplot(aes(x=BTC.CAD.Close, y=ETH.CAD.Close))+geom_point()+
geom_smooth(method='lm')
df_kryptos_2021 %>%
ggplot(aes(x=BTC.CAD.Close, y=ETH.CAD.Close, color=as.factor(mth)))+geom_point()+
geom_smooth(method='lm')
df_kryptos_2021 %>%
ggplot(aes(x=BTC.CAD.Close, y=ETH.CAD.Close))+geom_point(aes(color=as.factor(mth)))+
geom_smooth(method='lm')
df_kryptos_2020 %>% ggplot(aes(x=as.factor(mth), y=BTC.CAD.Close))+geom_boxplot()
df_kryptos_2020 %>% ggplot(aes(x=as.factor(mth), y=ETH.CAD.Close))+geom_boxplot()
kryptos2020 <- kryptos_all["2020-01-01/2020-12-31"]
kryptos2020_btc_ret <- dailyReturn(kryptos2020$BTC.CAD.Close)
dygraph(kryptos2020_btc_ret)
kryptos2020_btc_ret %>% ggplot(aes(x=.))+geom_histogram()+
geom_vline(xintercept = mean(kryptos2020_btc_ret))
kryptos2020 <- kryptos_all["2020-01-01/2020-12-31"]
kryptos2020_eth_ret <- dailyReturn(kryptos2020$ETH.CAD.Close)
dygraph(kryptos2020_eth_ret)
kryptos2020_eth_ret %>% ggplot(aes(x=.))+geom_histogram()+
geom_vline(xintercept = mean(kryptos2020_eth_ret))
kryptos2020_ret <- merge(kryptos2020_btc_ret, kryptos2020_eth_ret, join='outer', fill=NA)
dygraph(kryptos2020_ret)
## convert to data frame for scatterplots etc
df_kryptos_2020_ret <- as.data.frame(kryptos2020_ret)
colnames(df_kryptos_2020_ret) <- c("BTC_ret","ETH_ret")
ggplot(df_kryptos_2020_ret, aes(x=BTC_ret, y=ETH_ret))+geom_point()+
geom_smooth(method='lm')
df_kryptos_2020_ret %>% ggplot(aes(x=BTC_ret))+geom_histogram()+
geom_vline(xintercept=sd(df_kryptos_2020_ret$BTC_ret), color='blue')+
geom_vline(xintercept=mean(df_kryptos_2020_ret$BTC_ret), color='green')+
geom_vline(xintercept=0-sd(df_kryptos_2020_ret$BTC_ret), color='blue')+
geom_text(aes(label=round(sd(BTC_ret),3)), color='blue',
x=sd(df_kryptos_2020_ret$BTC_ret), y=70, hjust= -0.1)+
geom_text(aes(label=round(mean(BTC_ret),3)), color='blue',
x=mean(df_kryptos_2020_ret$BTC_ret), y=100, hjust= -0.2)
df_kryptos_2020_ret %>% ggplot(aes(x=ETH_ret))+geom_histogram()+
geom_vline(xintercept=sd(df_kryptos_2020_ret$ETH_ret), color='blue')+
geom_vline(xintercept=0-sd(df_kryptos_2020_ret$ETH_ret), color='blue')+
geom_vline(xintercept=mean(df_kryptos_2020_ret$ETH_ret), color='green')+
geom_text(aes(label=round(sd(ETH_ret),3)), color='blue',
x=sd(df_kryptos_2020_ret$ETH_ret), y=70, hjust= -0.1)+
geom_text(aes(label=round(mean(ETH_ret),3)), color='green',
x=mean(df_kryptos_2020_ret$ETH_ret), y=100, hjust= -0.2)
df_kryptos_2021 %>% ggplot(aes(x=as.factor(mth), y=BTC.CAD.Close))+geom_boxplot()
df_kryptos_2021 %>% ggplot(aes(x=as.factor(mth), y=ETH.CAD.Close))+geom_boxplot()
kryptos2021 <- kryptos_all["2021-01-01/2021-12-31"]
kryptos2021_btc_ret <- dailyReturn(kryptos2021$BTC.CAD.Close)
dygraph(kryptos2021_btc_ret)
kryptos2021_btc_ret %>% ggplot(aes(x=.))+geom_histogram()+
geom_vline(xintercept = mean(kryptos2021_btc_ret))
kryptos2021 <- kryptos_all["2021-01-01/2021-12-31"]
kryptos2021_eth_ret <- dailyReturn(kryptos2021$ETH.CAD.Close)
dygraph(kryptos2021_eth_ret)
kryptos2021_eth_ret %>% ggplot(aes(x=.))+geom_histogram()+
geom_vline(xintercept = mean(kryptos2021_eth_ret))
kryptos2021_ret <- merge(kryptos2021_btc_ret, kryptos2021_eth_ret, join='outer', fill=NA)
dygraph(kryptos2021_ret)
## convert to data frame for scatterplots etc
df_kryptos_2021_ret <- as.data.frame(kryptos2021_ret)
colnames(df_kryptos_2021_ret) <- c("BTC_ret","ETH_ret")
ggplot(df_kryptos_2021_ret, aes(x=BTC_ret, y=ETH_ret))+geom_point()+
geom_smooth(method='lm')
df_kryptos_2021_ret %>% ggplot(aes(x=BTC_ret))+geom_histogram()+
geom_vline(xintercept=sd(df_kryptos_2021_ret$BTC_ret), color='blue')+
geom_vline(xintercept=mean(df_kryptos_2021_ret$BTC_ret), color='green')+
geom_vline(xintercept=0-sd(df_kryptos_2021_ret$BTC_ret), color='blue')+
geom_text(aes(label=round(sd(BTC_ret),3)), color='blue',
x=sd(df_kryptos_2021_ret$BTC_ret), y=70, hjust= -0.1)+
geom_text(aes(label=round(mean(BTC_ret),3)), color='blue',
x=mean(df_kryptos_2021_ret$BTC_ret), y=100, hjust= -0.2)
df_kryptos_2021_ret %>% ggplot(aes(x=ETH_ret))+geom_histogram()+
geom_vline(xintercept=sd(df_kryptos_2021_ret$ETH_ret), color='blue')+
geom_vline(xintercept=0-sd(df_kryptos_2021_ret$ETH_ret), color='blue')+
geom_vline(xintercept=mean(df_kryptos_2021_ret$ETH_ret), color='green')+
geom_text(aes(label=round(sd(ETH_ret),3)), color='blue',
x=sd(df_kryptos_2021_ret$ETH_ret), y=70, hjust= -0.1)+
geom_text(aes(label=round(mean(ETH_ret),3)), color='green',
x=mean(df_kryptos_2021_ret$ETH_ret), y=100, hjust= -0.2)
At the end of the day…what matters is what your return is at the end of the day. :)
df_kryptos_2021ytd <- df_kryptos_2021 %>% filter(date==min(date) | date==max(date)) %>% select(date, yr, mth, BTC.CAD.Close, ETH.CAD.Close) %>%
mutate(BTC.CAD.ret=BTC.CAD.Close/lag(BTC.CAD.Close)-1,
ETH.CAD.ret=ETH.CAD.Close/lag(ETH.CAD.Close)-1)
df_kryptos_2021ytd_lg <- df_kryptos_2021ytd %>%
filter(date==max(date)) %>%
select(date, yr, mth, BTC.CAD.ret, ETH.CAD.ret) %>%
pivot_longer(cols=c(4:5),
names_to='coin',
values_to='ytd_return')
df_kryptos_2021ytd_lg %>% ggplot(aes(x=coin, y=ytd_return))+
geom_col()+
scale_y_continuous(labels=percent)
df_kryptos_2021ytd[,c(4:7)]
## BTC.CAD.Close ETH.CAD.Close BTC.CAD.ret ETH.CAD.ret
## 2021-01-01 37393.09 929.7528 NA NA
## 2021-05-21 45018.18 2933.2009 0.2039171 2.154818
ccurrency <- c("BTC-CAD", "ETH-CAD","LTC-CAD","BCH-CAD")
kryptos_multi <- NULL
for(c in ccurrency){
kryptos_multi <- cbind(kryptos_multi,
getSymbols(Symbols=c,
from='2018-01-01', periodicity='daily',
auto.assign = FALSE)[,4])
}
chart.Correlation(kryptos_multi, histogram=TRUE)